/* 
    现在使用 Promise + fs 完成回调地狱的问题

    需求：有三个文件 data/1.txt(1) data/2.txt(2) data/3.txt(3) 希望可以顺序的读取 1.txt 2.txt 3.txt 的内容。
翻译：
    1. 先读 1.txt
    2. 读完之后，在读 2.txt
    3. 读完之后，在读 3.txt

*/

const fs = require('fs');


const p1 = new Promise((resolve, reject) => {
    fs.readFile('./data/1.txt', 'utf8', (err, data) => {
        if (err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
})


const p2 = new Promise((resolve, reject) => {
    fs.readFile('./data/2.txt', 'utf8', (err, data) => {
        if (err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
})


const p3 = new Promise((resolve, reject) => {
    fs.readFile('./data/3.txt', 'utf8', (err, data) => {
        if (err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
})

/* then 是可以连续的调用的 */
let str = '';

p1.then((data) => {
    console.log(data);
    str += data;
    /* 还可以继续继续的 return 1. 基本数据类型 2. Promise对象 */
    return p2; // 如果 return是一个 Promise对象，会把 resolve 时候的data传递下一个 then 的第一个函数的参数列表里面

}).then((data) => {
    str += data;
    console.log('data就是上一个then的返回值：', data);
    return p3;
}).then((data) => {
    str += data;
    console.log('data就是上第二个个then的返回值：', data);

    console.log('最终读取到的三个文件的内容：str:', str);
})